home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / swing / MenuSelectionManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  6.2 KB  |  321 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Point;
  5. import java.awt.Rectangle;
  6. import java.awt.event.KeyEvent;
  7. import java.awt.event.MouseEvent;
  8. import java.util.Vector;
  9. import javax.swing.event.ChangeEvent;
  10. import javax.swing.event.ChangeListener;
  11. import javax.swing.event.EventListenerList;
  12. import sun.awt.AppContext;
  13.  
  14. public class MenuSelectionManager {
  15.    private Vector selection = new Vector();
  16.    private static final boolean TRACE = false;
  17.    private static final boolean VERBOSE = false;
  18.    private static final boolean DEBUG = false;
  19.    private static final StringBuilder MENU_SELECTION_MANAGER_KEY = new StringBuilder("javax.swing.MenuSelectionManager");
  20.    protected transient ChangeEvent changeEvent = null;
  21.    protected EventListenerList listenerList = new EventListenerList();
  22.  
  23.    public static MenuSelectionManager defaultManager() {
  24.       synchronized(MENU_SELECTION_MANAGER_KEY) {
  25.          AppContext var1 = AppContext.getAppContext();
  26.          MenuSelectionManager var2 = (MenuSelectionManager)var1.get(MENU_SELECTION_MANAGER_KEY);
  27.          if (var2 == null) {
  28.             var2 = new MenuSelectionManager();
  29.             var1.put(MENU_SELECTION_MANAGER_KEY, var2);
  30.          }
  31.  
  32.          return var2;
  33.       }
  34.    }
  35.  
  36.    public void setSelectedPath(MenuElement[] var1) {
  37.       int var4 = this.selection.size();
  38.       int var5 = 0;
  39.       if (var1 == null) {
  40.          var1 = new MenuElement[0];
  41.       }
  42.  
  43.       int var2 = 0;
  44.  
  45.       for(int var3 = var1.length; var2 < var3 && var2 < var4 && (MenuElement)this.selection.elementAt(var2) == var1[var2]; ++var2) {
  46.          ++var5;
  47.       }
  48.  
  49.       for(int var7 = var4 - 1; var7 >= var5; --var7) {
  50.          MenuElement var6 = (MenuElement)this.selection.elementAt(var7);
  51.          this.selection.removeElementAt(var7);
  52.          var6.menuSelectionChanged(false);
  53.       }
  54.  
  55.       var2 = var5;
  56.  
  57.       for(int var9 = var1.length; var2 < var9; ++var2) {
  58.          if (var1[var2] != null) {
  59.             this.selection.addElement(var1[var2]);
  60.             var1[var2].menuSelectionChanged(true);
  61.          }
  62.       }
  63.  
  64.       this.fireStateChanged();
  65.    }
  66.  
  67.    public MenuElement[] getSelectedPath() {
  68.       MenuElement[] var1 = new MenuElement[this.selection.size()];
  69.       int var2 = 0;
  70.  
  71.       for(int var3 = this.selection.size(); var2 < var3; ++var2) {
  72.          var1[var2] = (MenuElement)this.selection.elementAt(var2);
  73.       }
  74.  
  75.       return var1;
  76.    }
  77.  
  78.    public void clearSelectedPath() {
  79.       if (this.selection.size() > 0) {
  80.          this.setSelectedPath((MenuElement[])null);
  81.       }
  82.  
  83.    }
  84.  
  85.    public void addChangeListener(ChangeListener var1) {
  86.       this.listenerList.add(ChangeListener.class, var1);
  87.    }
  88.  
  89.    public void removeChangeListener(ChangeListener var1) {
  90.       this.listenerList.remove(ChangeListener.class, var1);
  91.    }
  92.  
  93.    public ChangeListener[] getChangeListeners() {
  94.       return (ChangeListener[])this.listenerList.getListeners(ChangeListener.class);
  95.    }
  96.  
  97.    protected void fireStateChanged() {
  98.       Object[] var1 = this.listenerList.getListenerList();
  99.  
  100.       for(int var2 = var1.length - 2; var2 >= 0; var2 -= 2) {
  101.          if (var1[var2] == ChangeListener.class) {
  102.             if (this.changeEvent == null) {
  103.                this.changeEvent = new ChangeEvent(this);
  104.             }
  105.  
  106.             ((ChangeListener)var1[var2 + 1]).stateChanged(this.changeEvent);
  107.          }
  108.       }
  109.  
  110.    }
  111.  
  112.    public void processMouseEvent(MouseEvent var1) {
  113.       Point var4 = var1.getPoint();
  114.       Component var18 = (Component)var1.getSource();
  115.       if (var18.isShowing()) {
  116.          int var19 = var1.getID();
  117.          int var20 = var1.getModifiers();
  118.          if (var19 != 504 && var19 != 505 || (var20 & 28) == 0) {
  119.             SwingUtilities.convertPointToScreen(var4, var18);
  120.             int var2 = var4.x;
  121.             int var3 = var4.y;
  122.             Vector var16 = (Vector)this.selection.clone();
  123.             int var17 = var16.size();
  124.             boolean var21 = false;
  125.  
  126.             for(int var5 = var17 - 1; var5 >= 0 && !var21; --var5) {
  127.                MenuElement var13 = (MenuElement)var16.elementAt(var5);
  128.                MenuElement[] var14 = var13.getSubElements();
  129.                MenuElement[] var15 = null;
  130.                int var7 = 0;
  131.  
  132.                for(int var8 = var14.length; var7 < var8 && !var21; ++var7) {
  133.                   if (var14[var7] != null) {
  134.                      Component var9 = var14[var7].getComponent();
  135.                      if (var9.isShowing()) {
  136.                         int var11;
  137.                         int var12;
  138.                         if (var9 instanceof JComponent) {
  139.                            var11 = ((JComponent)var9).getWidth();
  140.                            var12 = ((JComponent)var9).getHeight();
  141.                         } else {
  142.                            Rectangle var10 = var9.getBounds();
  143.                            var11 = var10.width;
  144.                            var12 = var10.height;
  145.                         }
  146.  
  147.                         var4.x = var2;
  148.                         var4.y = var3;
  149.                         SwingUtilities.convertPointFromScreen(var4, var9);
  150.                         if (var4.x >= 0 && var4.x < var11 && var4.y >= 0 && var4.y < var12) {
  151.                            if (var15 == null) {
  152.                               var15 = new MenuElement[var5 + 2];
  153.  
  154.                               for(int var22 = 0; var22 <= var5; ++var22) {
  155.                                  var15[var22] = (MenuElement)var16.elementAt(var22);
  156.                               }
  157.                            }
  158.  
  159.                            var15[var5 + 1] = var14[var7];
  160.                            MenuElement[] var23 = this.getSelectedPath();
  161.                            if (var23[var23.length - 1] != var15[var5 + 1] && (var23.length < 2 || var23[var23.length - 2] != var15[var5 + 1])) {
  162.                               Component var24 = var23[var23.length - 1].getComponent();
  163.                               MouseEvent var25 = new MouseEvent(var24, 505, var1.getWhen(), var1.getModifiers(), var4.x, var4.y, var1.getXOnScreen(), var1.getYOnScreen(), var1.getClickCount(), var1.isPopupTrigger(), 0);
  164.                               var23[var23.length - 1].processMouseEvent(var25, var15, this);
  165.                               MouseEvent var26 = new MouseEvent(var9, 504, var1.getWhen(), var1.getModifiers(), var4.x, var4.y, var1.getXOnScreen(), var1.getYOnScreen(), var1.getClickCount(), var1.isPopupTrigger(), 0);
  166.                               var14[var7].processMouseEvent(var26, var15, this);
  167.                            }
  168.  
  169.                            MouseEvent var27 = new MouseEvent(var9, var1.getID(), var1.getWhen(), var1.getModifiers(), var4.x, var4.y, var1.getXOnScreen(), var1.getYOnScreen(), var1.getClickCount(), var1.isPopupTrigger(), 0);
  170.                            var14[var7].processMouseEvent(var27, var15, this);
  171.                            var21 = true;
  172.                            var1.consume();
  173.                         }
  174.                      }
  175.                   }
  176.                }
  177.             }
  178.  
  179.          }
  180.       }
  181.    }
  182.  
  183.    private void printMenuElementArray(MenuElement[] var1) {
  184.       this.printMenuElementArray(var1, false);
  185.    }
  186.  
  187.    private void printMenuElementArray(MenuElement[] var1, boolean var2) {
  188.       System.out.println("Path is(");
  189.       int var3 = 0;
  190.  
  191.       for(int var4 = var1.length; var3 < var4; ++var3) {
  192.          for(int var5 = 0; var5 <= var3; ++var5) {
  193.             System.out.print("  ");
  194.          }
  195.  
  196.          MenuElement var6 = var1[var3];
  197.          if (var6 instanceof JMenuItem) {
  198.             System.out.println(((JMenuItem)var6).getText() + ", ");
  199.          } else if (var6 instanceof JMenuBar) {
  200.             System.out.println("JMenuBar, ");
  201.          } else if (var6 instanceof JPopupMenu) {
  202.             System.out.println("JPopupMenu, ");
  203.          } else if (var6 == null) {
  204.             System.out.println("NULL , ");
  205.          } else {
  206.             System.out.println("" + var6 + ", ");
  207.          }
  208.       }
  209.  
  210.       System.out.println(")");
  211.       if (var2) {
  212.          Thread.dumpStack();
  213.       }
  214.  
  215.    }
  216.  
  217.    public Component componentForPoint(Component var1, Point var2) {
  218.       Point var5 = var2;
  219.       SwingUtilities.convertPointToScreen(var2, var1);
  220.       int var3 = var2.x;
  221.       int var4 = var2.y;
  222.       Vector var16 = (Vector)this.selection.clone();
  223.       int var17 = var16.size();
  224.  
  225.       for(int var6 = var17 - 1; var6 >= 0; --var6) {
  226.          MenuElement var14 = (MenuElement)var16.elementAt(var6);
  227.          MenuElement[] var15 = var14.getSubElements();
  228.          int var8 = 0;
  229.  
  230.          for(int var9 = var15.length; var8 < var9; ++var8) {
  231.             if (var15[var8] != null) {
  232.                Component var10 = var15[var8].getComponent();
  233.                if (var10.isShowing()) {
  234.                   int var12;
  235.                   int var13;
  236.                   if (var10 instanceof JComponent) {
  237.                      var12 = ((JComponent)var10).getWidth();
  238.                      var13 = ((JComponent)var10).getHeight();
  239.                   } else {
  240.                      Rectangle var11 = var10.getBounds();
  241.                      var12 = var11.width;
  242.                      var13 = var11.height;
  243.                   }
  244.  
  245.                   var5.x = var3;
  246.                   var5.y = var4;
  247.                   SwingUtilities.convertPointFromScreen(var5, var10);
  248.                   if (var5.x >= 0 && var5.x < var12 && var5.y >= 0 && var5.y < var13) {
  249.                      return var10;
  250.                   }
  251.                }
  252.             }
  253.          }
  254.       }
  255.  
  256.       return null;
  257.    }
  258.  
  259.    public void processKeyEvent(KeyEvent var1) {
  260.       MenuElement[] var2 = new MenuElement[0];
  261.       var2 = (MenuElement[])this.selection.toArray(var2);
  262.       int var3 = var2.length;
  263.       if (var3 >= 1) {
  264.          for(int var5 = var3 - 1; var5 >= 0; --var5) {
  265.             MenuElement var6 = var2[var5];
  266.             MenuElement[] var7 = var6.getSubElements();
  267.             MenuElement[] var4 = null;
  268.  
  269.             for(int var8 = 0; var8 < var7.length; ++var8) {
  270.                if (var7[var8] != null && var7[var8].getComponent().isShowing() && var7[var8].getComponent().isEnabled()) {
  271.                   if (var4 == null) {
  272.                      var4 = new MenuElement[var5 + 2];
  273.                      System.arraycopy(var2, 0, var4, 0, var5 + 1);
  274.                   }
  275.  
  276.                   var4[var5 + 1] = var7[var8];
  277.                   var7[var8].processKeyEvent(var1, var4, this);
  278.                   if (var1.isConsumed()) {
  279.                      return;
  280.                   }
  281.                }
  282.             }
  283.          }
  284.  
  285.          MenuElement[] var10 = new MenuElement[]{var2[0]};
  286.          var10[0].processKeyEvent(var1, var10, this);
  287.          if (!var1.isConsumed()) {
  288.             ;
  289.          }
  290.       }
  291.    }
  292.  
  293.    public boolean isComponentPartOfCurrentMenu(Component var1) {
  294.       if (this.selection.size() > 0) {
  295.          MenuElement var2 = (MenuElement)this.selection.elementAt(0);
  296.          return this.isComponentPartOfCurrentMenu(var2, var1);
  297.       } else {
  298.          return false;
  299.       }
  300.    }
  301.  
  302.    private boolean isComponentPartOfCurrentMenu(MenuElement var1, Component var2) {
  303.       if (var1 == null) {
  304.          return false;
  305.       } else if (var1.getComponent() == var2) {
  306.          return true;
  307.       } else {
  308.          MenuElement[] var3 = var1.getSubElements();
  309.          int var4 = 0;
  310.  
  311.          for(int var5 = var3.length; var4 < var5; ++var4) {
  312.             if (this.isComponentPartOfCurrentMenu(var3[var4], var2)) {
  313.                return true;
  314.             }
  315.          }
  316.  
  317.          return false;
  318.       }
  319.    }
  320. }
  321.